{
    // 泛型函数
    // 函数名后面加尖括号 （如果是箭头函数 有点特殊待会补充 在括号前面加尖括号）
    // 记忆方式有2种 
    // 第1种记忆方式 所有的简括号都加在名字后面 除了箭头函数
    // 第2种记忆方式 函数的泛型 尖括号就加在括号前面
    // 机器人id 数字 字符串 布尔 
    // 方法有形参，里面的实现就打印id
    function sayHi<T>(id: T) {
        console.log(id);
    }
    sayHi<boolean>(true)
    sayHi(1)
    sayHi([1,2,3])

    /**
     * 实现一个函数 函数生成一个数组，数组里的每一项是用户定义的
     * // 第一个参数 代表数组生成几项
     * // 第二个参数 代表数组里的每一项是什么
     * repeatArr(2, 1) => [1, 1]
     * repeatArr(3, true) => [true, true, true]
     */
    const repeatArr = <T>(length: number, item: T): T[] => {
        const result = []
        for (let index = 0; index < length; index++) {
            result.push(item)
        }
        return result
    }
    const arr1 = repeatArr<string>(3, '1')
    const arr2 = repeatArr<boolean>(5, true)
    console.log(arr1, arr2);
}


export { }
